#include <REGX52.H>
#include "Delay.h"
#include "LCD1602.h"
#include "Timer0.h"

//unsigned char Sec,Min,Hour;
unsigned char Sec=55,Min=59,Hour=23;//测试

void main()
{
	LCD_Init();
	Timer0_Init();
	
	LCD_ShowString(1,1,"CLOCK");
	LCD_ShowString(2,1,"  :  :");
	
	while(1)
	{
		//LCD的显示是较长时间的，不宜放在中断函数，则放在主函数
		LCD_ShowNum(2,7,Sec,2);
		LCD_ShowNum(2,4,Min,2);
		LCD_ShowNum(2,1,Hour,2);
	}
}

void Timer0_Routine() interrupt 1//中断函数
{
	static unsigned int T0Count;//加上static保持上次的值，为静态变量
	//重新给T0定时器赋初始值
	TL0 = 0x66;				//设置定时初始值
	TH0 = 0xFC;				//设置定时初始值
	
	//假设单片机的时钟频率为12MHz，定时器的计数频率为12MHz / 12 = 1MHz
	//（因为8051单片机的定时器计数频率是时钟频率的1/12），即每1微秒计数一次。
	//因此，定时器从64535计数到65535需要1000微秒，即1毫秒。
	T0Count++;
	if(T0Count>=1000)
	{
		T0Count=0;
		Sec++;
		if(Sec>=60)
		{
			Sec=0;
			Min++;
			if(Min>=60)
			{
				Min=0;
				Hour++;
				if(Hour>=24)
				{
					Hour=0;
				}
			}
		}
	}
}
